# coding:utf-8
# author:fxh

#数字表达式：
"""
题目：给定两个整数 a <= b,通过加1和乘以2的方式，将a变换成b
例如： 23 = ((5*2+1）*2 +1）
113 = (((11+1)+1)+1)*2)*2)*2+1)

思路：
"""

def intSeq(a,b):
    if (a>b):
        raise RuntimeError("整数a不能大于b")
    else:
        #base递归终止条件
        if (a == b):
            return str(a)
        if (b % 2 == 1):
            print("(" + intSeq(a,b-1) + "+1)")
            return "(" + intSeq(a,b-1) + "+1)"
        if (b < 2*a):
            print("(" + intSeq(a,b-1) + "+1)")
            return "(" + intSeq(a,b-1) + "+1)"
        print(intSeq(a,b/2) + "*2")
        return intSeq(a,b/2) + "*2"


if __name__ == '__main__':
    a =5
    b = 15
    print(str(b) + "=" + intSeq(a,b))





